package org.jeecg.modules.wlhy.hydriver.service;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import org.jeecg.common.api.vo.Result;
import org.jeecg.modules.system.entity.SysUser;
import org.jeecg.modules.third.dongjiang.tax.system.dto.ApiBaseResDTO;
import org.jeecg.modules.wlhy.hydriver.entity.*;
import org.jeecg.modules.wlhy.hydriver.vo.HyDriverVehicleVO;
import org.jeecg.modules.wlhy.hyvehicle.entity.HyVehicle;
import org.jeecg.modules.wlhy.shipping.entity.HyShippingNote;

import java.util.List;

/**
 * @Description: 司机管理
 * @Author: duanlikao
 * @Date:   2020-12-02
 * @Version: V1.0
 */
public interface IHyDriverService extends IService<HyDriver> {

    Result  saveHyDriver(HyDriver hyDriver);

    HyDriver getHyDriverByTelephone(String telephone);

    HyDriver getHyDriverByUserId(String userId);

    HyDriver getDriverInfo(String id);

    List<HyShippingNote> getCurrentShippingNote(String driverId);

    int getCurrentShippingNoteCount(String driverId);

    int getCurrentShippingNoteCount(String driverId, String orderId);

    Result getDriverUserInfo();

    Result<?> getRefreshDriverUserInfo();

    HyDriver checkValidUser(SysUser sysUser);
    Result checkValidDriver(HyDriver driver);

    boolean checkQualificationV2(HyDriver hyDriverDb);

    String checkDriver(String IDCardNo, String name);

    String testCheckDriver();

    ApiBaseResDTO tjTaxUpload(HyDriver hyDriver, HyVehicle hyVehicle);

    IPage<HyDriverVehicleVO> getDriverVehiclePageList(Page<HyDriverVehicleVO> page, QueryWrapper<HyDriverVehicleVO> queryWrapper);

    IPage<DriverUserDTO> getDriverUserPageList(
            Page<DriverUserDTO> page,
            QueryWrapper<DriverUserDTO> queryWrapper);


    IPage<HyDriverDTO> pageList(
            Page<HyDriverDTO> page,
            QueryWrapper<HyDriverDTO> queryWrapper,String customerId);


    Result<?> modifyPhone(HyDriver driver, String newPhone);

    boolean uploadDaoda(HyDriver hyDriver);

    //天津税务上报
    ApiBaseResDTO tjTaxUpload(HyDriver hyDriver);

    Result<?> lnTaxedDriver(String ids);

    //辽宁税务上报司机信息
    Result<?> lnTaxUploadDriver(HyDriver hyDriver);

    Result<?> updatelnTaxUploadDriver(HyDriver hyDriver);

    //辽宁税务上报司机所需照片(身份证正面、身份证反面、司机大头照、驾驶证、【从业资格证】、司机纳税人身份证正面、司机纳税人银行卡正面)
    //index：-1上报所有照片 0-6上报对应单独照片
    Result<?> lnTaxUploadDriverImg(HyDriver hyDriver, int index);
    //辽宁税务上报司机所有信息
    Result<?> lnTaxUploadDriverAll(HyDriver hyVehicle);
    boolean izDriverLnUploadSuccess(HyDriver hyVehicle);

    //快货运上报
    //上报承运人(用司机信息)
    Result<?> tosUploadCarrier(HyDriver hyDriver);
    //上报司机
    Result<?> tosUploadDriver(HyDriver hyDriver);

    //excal导入
    /*Boolean importExcelData(MultipartFile file);*/

    public  int deleteDriverById(String id);

    public  HyDriver getDriverById(String id);



   void saveBatchDriver(List<ImportHyDriverDTO> list);
   void saveBatchDriver2(List<ImportFWFHyDriverDTO> list);


    HyDriver getbyIdForUpdate(String driverId);

    List<HyVehicle> getDriverVehicleList(String driverId);
    int getDsDriverCount(String customerId);

    Result<?> checkVehicleOverdueTime(HyDriver driver,HyVehicle vehicle);

    IPage<HySelectDriverDTO> getSelectPageList(Page<HySelectDriverDTO> page, QueryWrapper<HyDriver> queryWrapper);

    //检查车辆是否属于司机
    boolean checkIsDriverVehicle(String driverId, String vehicleId);

    IPage<HySelectDriverDTO> getMultipleSelectPageList(Page<HySelectDriverDTO> page, QueryWrapper<HyDriver> queryWrapper);

    boolean updateJgUploadStatusById(String id, String status);

    boolean updateSxUploadStatusById(String id, String status);

    boolean updateAhUploadStatusById(String id, String status);

    boolean updateHbUploadStatusById(String id, String status);

    boolean updateYqUploadStatusById(String id, String status);

    boolean updateJxUploadStatusById(String id, String status);

    boolean updateJsUploadStatusById(String id, String status);

    boolean updateZjUploadStatusById(String id, String status);

    boolean updateHubeiUploadStatusById(String id, String status);

}
